"use client"; import { useState, useEffect, useCallback } from "react"; import { useParams, useRouter } from "next/navigation"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Plus, ArrowLeft, Edit, Trash2 } from "lucide-react"; import { Skeleton } from "@/components/ui/skeleton"; import { AddFieldDialog } from "@/app/components/layout-configurations/AddFieldDialog"; import { EditFieldDialog } from "@/app/components/layout-configurations/EditFieldDialog"; import { DeleteFieldDialog } from "@/app/components/layout-configurations/DeleteFieldDialog"; import { getLayoutSectionFields, getSection } from "@/app/actions/layout-configurations"; interface LayoutSectionField { id: number; name: string; dataType: string; dataTypeFormat: string | null; cellPosition: string; importTableColumnName: string; importColumnOrderNumber: number; } interface LayoutSection { id: number; name: string; type: string; sheetName: string; tableName: string; } export default function SectionFieldsPage() { const params = useParams(); const router = useRouter(); const sectionId = parseInt(params.id as string); const [section, setSection] = useState(null); const [fields, setFields] = useState([]); const [loading, setLoading] = useState(true); const [addDialogOpen, setAddDialogOpen] = useState(false); const [editDialogOpen, setEditDialogOpen] = useState(false); const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); const [selectedField, setSelectedField] = useState(null); const loadSectionData = useCallback(async () => { try { setLoading(true); const [sectionData, fieldsData] = await Promise.all([ getSection(sectionId), getLayoutSectionFields(sectionId) ]); if (sectionData.success && sectionData.data) { setSection(sectionData.data); } else { setSection(null); } if (fieldsData.success && fieldsData.data) { setFields(fieldsData.data); } else { setFields([]); } } catch (error) { console.error("Error loading section data:", error); } finally { setLoading(false); } }, [sectionId]); useEffect(() => { loadSectionData(); }, [sectionId, loadSectionData]); const handleFieldAdded = () => { loadSectionData(); setAddDialogOpen(false); }; const handleFieldUpdated = () => { loadSectionData(); setEditDialogOpen(false); }; const handleFieldDeleted = () => { loadSectionData(); setDeleteDialogOpen(false); }; const openEditDialog = (field: LayoutSectionField) => { setSelectedField(field); setEditDialogOpen(true); }; const openDeleteDialog = (field: LayoutSectionField) => { setSelectedField(field); setDeleteDialogOpen(true); }; if (loading) { return (
); } if (!section) { return (

Section not found

); } return (
Section: {section.name} Manage fields for this section in the layout configuration
{fields.length} fields {section.type}
Sheet: {section.sheetName}
Table: {section.tableName}

Section Fields

{fields.length === 0 ? (

No fields found for this section

) : (
{fields.map((field) => (
{field.name} {field.dataType}
Position: {field.cellPosition}
Column: {field.importTableColumnName}
Order: {field.importColumnOrderNumber}
))}
)}
); }